Zum Hauptinhalt springen
Version: 2.0.0

Erstellen von Modulen

This page will guide you through the development process of an example plugin for the Caesar system.

Prerequisites

  • Java JDK 21 or newer
  • IntelliJ IDEA (recommended)
  • Maven (recommended)

Get started

First of all, you need to import the main API of Caesar into your project:

<repository>
<id>unifiedvision-caesar</id>
<name>Unified Vision Repo</name>
<url>https://repo.codeblocksmc.de/caesar</url>
</repository>
maven {
name "unifiedvisionCaesar"
url "https://repo.codeblocksmc.de/caesar"
}

Dependency:

<dependency>
<groupId>de.julianweinelt.caesar</groupId>
<artifactId>CaesarMC</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
implementation "de.julianweinelt.caesar:CaesarMC:1.0-SNAPSHOT"

You have to let Caesar know that you want to register a plugin. Your plugin needs a main class that extends CPlugin. Example:

YourPlugin.java
public class YourPlugin extends CPlugin {
@Getter
private static YourPlugin instance;

@Override
public void onLoad() {
instance = this; // Empfohlen in onLoad(). Danach kann YourPlugin.getInstance(); während der Laufzeit aufgerufen werden.
}

@Override
public void onEnable() {
// Füge den Code ein, der ausgeführt wird, wenn das Model aktiviert wird.
}

@Override
public void onDisable() {
// Füge den Code ein, der ausgeführt wird, wenn das Model deaktiviert wird.
}

@Override
public void onBukkitEnable() {
// Füge den Code ein, der ausgeführt wird, wenn das Model als Plugin von CaesarBridge aktiviert wird.
}

@Override
public void onBukkitDisable() {
// Füge den Code ein, der ausgeführt wird, wenn das Model als Plugin von CaesarBridge deaktiviert wird.
}

@Override
public void onBukkitLoad() {
// Füge den Code ein, der ausgeführt wird, wenn das Model als Plugin von CaesarBridge geladen wird.
}
}

Damit Cäsar das Modul richtig erkennt, benötigt es einige Informationen, wie den Namen, die Version, wo die Hauptklasse liegt, etc., um das Modul richtig laden zu können. Deshalb muss eine Datei im resources-Ordner im Classpath angelegt werden: plugin.json.

Diese JSON-Datei enthält alle erforderlichen Metadaten über das Plugin. Alle Felder werden nachfolgend erläutert:

hinweis

Alle JSON-Felder, die mit "comment" (z. B. "comment", "comment1") anfangen, werden beim Verarbeiten ignoriert. Sie dienen zur benutzerfreundlichen Dokumentation innerhalb der Datei.

🧩 plugin

Dieser Bereich enthält grundlegende Metadaten zu deinem Modul. Die Werte werden zur Identifikation sowie zur Versions- und Abhängigkeitsverwaltung genutzt.

NameTypBeschreibung
namestringDer Name des Moduls. Dieses Feld ist erforderlich.
versionstringVersion des Moduls (z. B. "1.0.0"). Dieses Feld ist erforderlich.
authorsarray of stringsEine Liste von Autoren, die das Modul entwickelt haben.
dependarray of stringsOptional. Gibt an, welche Module vor diesem Model geladen sein müssen.

⚙️ caesar

Dieser Bereich enthält technische Daten über das Modul, die Cäsar benötigt, um es korrekt auszuführen.

NameTypBeschreibung
mainClass string Vollständiger Klassenname mit Pfad im Classpath, der als Startpunkt dient (z. B. com.yourplugin.MainClass).
minAPIVersionstring Minimale Cäsar API Version, die der Server/CäsarBridge haben muss. Dient zur Kompatibilitätsüberwachung.
useBridgebooleanGibt an, ob das Modul kompatibel mit CäsarBridge ist und dort als Plugin geladen werden soll.

🖥️ client

This section defines how the plugin interacts with the Caesar Client, especially if it adds visual elements or pages.

KeyTypeDescription
hasPagebooleanGibt an, ob das Modul eine Client-Oberfläche enthält, die auf Clients installiert werden muss.
pageViewPermissionstringDiese Berechtigung muss ein Benutzer haben, um die Seite im Panel aufrufen zu können.
defaultbooleanWenn aktiviert, wird die Seite zur Standardseite für Nutzer. Pro Modul sollte nur eine Standardseite definiert sein.

📌 Beispielhafte plugin.json

{
"plugin": {
"name:": "Beispielmodul",
"version": "1.0.0",
"authors": ["Du", "und", "andere"],
"depend": []
},
"caesar": {
"mainClass": "de.deinplugin.MainClass",
"minAPIVersion": "1.0.1",
"useBridge": "true"
},
"client": {
"hasPage": true,
"pageViewPermission": "deinplugin.somepermission",
"default": false
}
}
hinweis

Wenn du die Einstellung client.hasPage auf true stellst, musst du eine page.json-Datei erstellen. Mehr zu Pages findest du hier.

🖇️ Verwendung von CaesarBridge

Caesar nutzt die Komponente CaesarBridge, um sich mit Minecraft-Servern zu verbinden.
Dabei handelt es sich um ein Plugin, das auf jedem Server installiert werden muss, wenn:

  • der Server im Standalone-Modus läuft.
  • du Melde- oder Strafen-Funktionen nutzen möchtest.
  • ein von dir im Backend installiertes Plugin auch auf den Minecraft-Servern ausgeführt werden muss.